home *** CD-ROM | disk | FTP | other *** search
/ 3D Games - Real-time Rend…ng & Software Technology / 3D Games - Real-time Rendering & Software Technology.iso / flysdk / plugin / weapon / weapon.h < prev   
Encoding:
C/C++ Source or Header  |  2000-04-10  |  3.7 KB  |  174 lines

  1. #include "..\gamelib\gamelib.h"
  2.  
  3. enum classes_types
  4. {
  5.     TYPE_GUN=0x170,
  6.     TYPE_HITMARK,
  7.     TYPE_LASER,
  8.     TYPE_MISSILE,
  9.     TYPE_MINE,
  10. };
  11.  
  12. #define TYPE_GUN_PROJECTILE (TYPE_LASER|(TYPE_MINE<<16))
  13.  
  14. class hitmark : public bsp_object
  15. {
  16. public:
  17.     hitmark() { type=TYPE_HITMARK; dynlight.null(); };
  18.  
  19.     int texture;
  20.     float size;
  21.     int fadetime;
  22.     int mode;
  23.  
  24.     vector dynlight;
  25.  
  26.     int step(int dt);
  27.     void draw();
  28.     int get_custom_param_desc(int i,param_desc *pd);
  29.     bsp_object *clone();
  30.     int message(vector& p,float rad,int msg,int param,void *data);
  31. };
  32.  
  33. class gun_projectile : public bsp_object
  34. {
  35. public:
  36.     int player;
  37.     float damage;
  38.  
  39.     virtual void fire(vector& p,vector& dir,float v,int playerid)=0;
  40. };
  41.  
  42. class gun : public bsp_object
  43. {
  44. public:
  45.     gun() { type=TYPE_GUN; firetime=0; curfire=0; };
  46.  
  47.     dyn_sound *sndfire;
  48.     gun_projectile *p;
  49.     int firecount,nfirepos,firetime,
  50.         delay,nfire,curfire,firedelay;
  51.     float firevel,randomangle;
  52.     vector firepos[4];
  53.  
  54.     virtual void fire(bsp_object *obj,int player);
  55.     virtual int fire_status();
  56.     int get_custom_param_desc(int i,param_desc *pd);
  57.     bsp_object *clone();
  58. };
  59.  
  60. class mine : public gun_projectile
  61. {
  62. public:
  63.     mine() { type=TYPE_MINE; mine_find=0; dynlight.null(); };
  64.  
  65.     mesh *objmesh;
  66.     explode *exp; 
  67.     light *l;
  68.     dyn_sound *snd;
  69.     exp_sphere *s;
  70.     int delay;
  71.     float shield;
  72.     float factor;
  73.     vector dynlight;
  74.  
  75.     bsp_object *enemy;
  76.     float enemydist,lookrange;
  77.     void (* mine_find)(void *data, bsp_object *e);
  78.  
  79.     virtual void fire(vector& p,vector& dir,float v,int playerid);
  80.     mesh *ray_intersect(vector& ro,vector& rd,vector& ip,float& dist,int &facenum,float rad=0.0f);
  81.     int message(vector& p,float rad,int msg,int param,void *data);
  82.  
  83.     int step(int dt);
  84.     void draw();
  85.     int get_custom_param_desc(int i,param_desc *pd);
  86.     bsp_object *clone();
  87. };
  88.  
  89. class laser : public gun_projectile
  90. {
  91. public:
  92.     laser() { type=TYPE_LASER; slast=0; };
  93.  
  94.     float sizetexture;
  95.     int sidetexture,fronttexture;
  96.     vector startpos;
  97.     hitmark *hm;
  98.  
  99.     light *l;
  100.     explode *exp; 
  101.     sprite_light *s;
  102.     float sfact,slast;
  103.  
  104.     virtual void fire(vector& p,vector& dir,float v,int playerid);
  105.  
  106.     int step(int dt);
  107.     void draw();
  108.     int get_custom_param_desc(int i,param_desc *pd);
  109.     bsp_object *clone();
  110. };
  111.  
  112. class missile : public gun_projectile
  113. {
  114. public:
  115.     missile() { type=TYPE_MISSILE; missile_find=0; dynlight.null(); };
  116.  
  117.     mesh *objmesh;
  118.     explode *exp; 
  119.     dyn_sound *snd;
  120.     viewport *viewport;
  121.     float lightzpos;
  122.     light *l;
  123.     hitmark *hm;
  124.     vector dynlight;
  125.     bsp_object *enemy;
  126.     float enemydist,rotvel,lookrange,lookangle;
  127.  
  128.     virtual void fire(vector& p,vector& dir,float v,int playerid);
  129.     void (* missile_find)(void *data, bsp_object *e);
  130.  
  131.     int step(int dt);
  132.     void draw();
  133.     int get_custom_param_desc(int i,param_desc *pd);
  134.     int message(vector& p,float rad,int msg,int param,void *data);
  135.     bsp_object *clone();
  136. };
  137.  
  138. class gun_desc : public class_desc
  139. {
  140. public:
  141.     void *create() { return new gun; };
  142.     char *get_name() { return "gun"; };
  143.     int get_type() { return TYPE_GUN; };
  144. };
  145. class hitmark_desc : public class_desc
  146. {
  147. public:
  148.     void *create() { return new hitmark; };
  149.     char *get_name() { return "hitmark"; };
  150.     int get_type() { return TYPE_HITMARK; };
  151. };
  152. class mine_desc : public class_desc
  153. {
  154. public:
  155.     void *create() { return new mine; };
  156.     char *get_name() { return "mine"; };
  157.     int get_type() { return TYPE_MINE; };
  158. };
  159. class laser_desc : public class_desc
  160. {
  161. public:
  162.     void *create() { return new laser; };
  163.     char *get_name() { return "laser"; };
  164.     int get_type() { return TYPE_LASER; };
  165. };
  166. class missile_desc : public class_desc
  167. {
  168. public:
  169.     void *create() { return new missile; };
  170.     char *get_name() { return "missile"; };
  171.     int get_type() { return TYPE_MISSILE; };
  172. };
  173.  
  174.